/**
 * 
 * 
 */
export interface ApiClient<T extends Identifiable> {
  findAll(params: any): Promise<{ items: T[]; pagination: Pagination }>
  findById(id: number): Promise<T>
  create(data: T): Promise<T>
  update(data: T): Promise<T>
  delete(id: number): Promise<void>
}

/**
 * 分页信息；
 */
export interface Pagination {
  page: number        // 当前页码；
  size: number        // 页面大小； 
  total: number       // 记录总数；
  pages: number       // 页数总数；
}

/**
 * 分页响应结构
 */
export interface PageData<T> {
  items: T[]              // 数据列表;
  pagination: Pagination  // 分页信息；
}

/**
 * 分页查询参数
 */
export interface PaginationParams {
  page?: number         // 当前页码；
  size?: number         // 页面大小；
  [key: string]: any    // 其他参数；
}

export interface Identifiable<T = string | number> {
  id: T;
}

export interface SearchParams {
  [key: string]: any
}
